/*
 * Copyright 2011-2012 by The Regents of the University of California Licensed
 * under the Apache License, Version 2.0 (the "License"); you may not use this
 * file except in compliance with the License. you may obtain a copy of the
 * License from
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package edu.ucsd.db.bassarisk.query.binding;

import java.util.ArrayList;
import java.util.Iterator;

import edu.ucsd.db.bassarisk.query.binding.Bindings.Binding;
import edu.ucsd.db.bassarisk.query.binding.Bindings.PositionBinding;

public class BindingSet implements Iterable<Binding> {
  private final ArrayList<Binding> bindings = new ArrayList<Binding>();

  public void add(final Binding newBinding) {
    this.bindings.add(newBinding);
  }

  public int count() {
    return this.bindings.size();
  }

  public Binding getById(final int bindingId) {
    return this.bindings.get(bindingId);
  }

  @Override
  public Iterator<Binding> iterator() {
    return this.bindings.iterator();
  }

  public PositionBinding lookupName(final String name) {
    for (Binding binding : this.bindings) {
      if (binding.getClass().equals(PositionBinding.class)) {
        PositionBinding binding2 = (PositionBinding) binding;
        if (binding2.getReferenceName() != null
            && binding2.getReferenceName().equals(name)) { return binding2; }
      }
    }
    return null;
  }
}